/** 检测相关工具集 */

/**
 * 判断当前是否为手机模式（基于视口宽度）
 *
 * @param breakPoint 断点，默认768px（常见移动设备断点）
 */
export const isMobileMode = (breakPoint: number = 768): boolean => {
  // 处理服务器端渲染（SSR）场景
  if (typeof window === 'undefined') return false
  return window.innerWidth <= breakPoint
}

/**
 * 判断字符串是否在数组中（支持正则）
 *
 * @param arr 给定数组
 * @param target 需要判断的字符串
 * @returns
 */
export function isMatch(arr: string[], target: string): boolean {
  return arr.some((element) => {
    // 处理正则表达式字符串（格式为 "/pattern/flags"）
    if (element.startsWith('/') && element.endsWith('/')) {
      const match = element.match(/^\/(.*)\/([a-z]*)$/) // 提取模式和标志
      if (!match) return false
      try {
        const regex = new RegExp(match[1], match[2]) // 构造正则
        return regex.test(target)
      } catch {
        return false // 无效正则静默失败
      }
    }
    // 普通字符串直接检查是否包含
    return target.includes(element)
  })
}
